[レポート] Boosting .NET application performance with Arm64 and AWS Graviton3 #reinvent #XNT401
いわさです。
AWS re:Invent 2022 にて Breakout Session の Boosting .NET application performance with Arm64 and AWS Graviton3 XNT401 に参加しました。
セッションレポートをお届けします。
動画も公開されています。
セッション概要
Did you know you can achieve 40 percent or higher price performance for your .NET 6+ applications using Arm64 and AWS Graviton3 processors? This session dives into the details on how to compile ASP.NET Core for Arm64 and deploy to Graviton3. Learn how to automate the deployment process with an Arm64-based CI/CD pipeline and benchmark a sample application on both Graviton3 and x86 instances to illustrate the benefits. Also, explore strategies such as threading approaches versus those used in x86-based instances and other optimization techniques that you can use to optimize your .NET 6+ applications on Graviton3.
スピーカー
- Sreelaxmi Pai, Sr. Modernization Architect, Amazon Web Services
- Kirk Davis, Principal Solutions Architect, Amazon Web Services
レベル
400 - Expert
アジェンダ
- Graviton3 について
- .NET on Graviton3 はコストパフォーマンス良い
- デモ1: ASP.NET Core を Graviton3 にデプロイ
- デモ2: Graviton3 と x86 インスタンスでのパフォーマンスを比較
Graviton3 について
- Graviton2 は x86-64 と比較し最大 40% コストパフォーマンスが良い
- Graviton3 は Graviton2 と比較しさらに最大 25% 性能が良い
- 電力効率も良くなってるのでサステナビリティの面からも良い
.NET on Graviton3 はコストパフォーマンス良い
- EC2 だけじゃなくサーバーレスもいける
- Lambda on Graviton で .NET 6 のマネージドランタイム
- 20% 低いコストで性能が 19% あがる
- AWS Toolkit for Visual Studio や Lambd atools for .NET CLI でもサポート済み
- Fargate on Graviton
- .NET バージョンなんでもいける
- ECR のマルチアーキテクチャコンテナイメージもある
- Lambda on Graviton で .NET 6 のマネージドランタイム
- そもそも .NET 7 自体に Arm64 向けのパフォーマンス改善が含まれている
このあたりでも紹介されている
Graviton3 と .NET 7 の相性は最高だから使えという話。
ただ .NET 7 は LTS じゃないのでそこは気にしておけと。
このあとは実際に Graviton3 で .NET 7 の ASP.NET アプリケーションを実行したりパフォーマンス測定を行うデモを実施
デモ1: ASP.NET Core を Graviton3 にデプロイ
c7g インスタンスを作成し ASP.NET をデプロイする。
どうやら現時点では Amazon Linux 2 には .NET 7 が必要とするライブラリのバージョンと非互換性があるようで、このデモでは Ubuntu を利用していた。
実行出来た。
デモ2: Graviton3 と x86 インスタンスでのパフォーマンスを比較
- 次に CI/CD パイプラインから環境別にデプロイ。ソースコードは同じものを使用している
- Lambda x86-64
- Lambda Graviton3
- Fargate x86-64
- Fargate Graviton3
以下は vCPU など同じ条件にあわせた環境別の比較。Graviton3 環境で高いパフォーマンスが測定されている。
c6i
c7g
サードパーティのコストパフォーマンス比較
いずれの場合も Graviton3 が高いコストパフォーマンスを記録している
さいごに
このセッションでは Graviton3 と .NET 6+ を組み合わせることでコストパフォーマンスの優勢性が得られることが解説されていました。
セッション内では NuGet パッケージなど Arm64 対応されていないものに関する注意点と評価が必要な点についても言及されていましたが、基本的には .NET では Graviton3 が採用出来ないかどうかを優先的に検討するのが良さそうだなと感じました。
参考
- AmazonEKS : Running ASP.NET Core application on Graviton2 :: Graviton2
- aws-graviton-getting-started/dotnet.md at main · aws/aws-graviton-getting-started · GitHub
- GitHub - aws-samples/aws-cdk-dotnet-graviton-ecs-example: Build and deploy .NET web applications to Arm-powered AWS Graviton 2 Amazon ECS Clusters using AWS CDK
- GitHub - Kirkaiya/AwsReinventXNT401: For re:Invent 2022 Boosting .NET Application Performance with Arm64 and Graviton3. Source code of apps demoed including CodeBuild buildspec.yml files and User Data to install .NET 7 on Ubuntu EC2 Linux.